package com.bdqn.singleton;

/**
 * 计数器
 *
 * 单例模式 饿汉式(静态内部类) 线程安全
 */
public class CounterSingleton04 {

    // 饿汉式 定义本类私有的对象，不实例化
    private static CounterSingleton04 instance;
    // 将默认构造方法定义为私有的，外部将不能直接实例化
    private CounterSingleton04() {}

    /**
     * 静态内部类
     */
    public static class SingletonHelper {
        private static final CounterSingleton04 INSTANCE = new CounterSingleton04();
    }

    /**
     * 获得唯一实例
     *
     * @return
     */
    public static CounterSingleton04 getInstance() {
        instance = SingletonHelper.INSTANCE;
        return instance;
    }

    int count = 0; // 计数器成员变量

    /**
     * 计数
     *
     * @return
     */
    public int count() {
        return this.count++;
    }
}
